import json
import configparser
import os
import sys

def load_config():
    # 默认配置
    config = {
        'host': '127.0.0.1',    # 服务器主机地址
        'port': 5000,           # 服务器端口号
        'debug': False,         # 是否开启调试模式
        'mail': {
            'server': 'smtp.126.com',       # 邮箱服务器
            'port': 465,                   # 邮箱服务器端口号
            'use_ssl': True,              # 是否使用SSL加密
            'username': '',               # 邮箱用户名
            'password': '',               # 邮箱密码
            'default_sender': '',         # 默认发件人
            'admin_recipient': ''         # 管理员收件人
        }
    }

    # 确定基础路径，适配PyInstaller打包环境
    if hasattr(sys, '_MEIPASS'):
        # 运行在PyInstaller打包后的环境
        base_path = sys._MEIPASS
    else:
        # 运行在开发环境
        base_path = os.path.dirname(__file__)

    # 读取JSON配置文件
    json_config_path = os.path.join(base_path, 'config.json')
    if os.path.exists(json_config_path):
        with open(json_config_path, 'r', encoding='utf-8') as f:
            json_config = json.load(f)
            # 如果有mail配置，则更新
            if 'mail' in json_config:
                config['mail'].update(json_config['mail'])
                # 删除mail键，避免后续update覆盖其他配置
                del json_config['mail']
            # 更新其他配置
            config.update(json_config)
    else:
        print(f'警告: 未找到JSON配置文件: {json_config_path}')

    # 读取INI配置文件
    ini_config_path = os.path.join(base_path, 'config.ini')
    if os.path.exists(ini_config_path):
        ini_config = configparser.ConfigParser()
        ini_config.read(ini_config_path, encoding='utf-8')

        # 读取服务器配置
        if 'server' in ini_config:
            if 'host' in ini_config['server']:
                config['host'] = ini_config['server']['host']
            if 'port' in ini_config['server']:
                config['port'] = int(ini_config['server']['port'])
            if 'debug' in ini_config['server']:
                config['debug'] = ini_config['server'].getboolean('debug')

        # 读取邮箱配置
        if 'mail' in ini_config:
            if 'server' in ini_config['mail']:
                config['mail']['server'] = ini_config['mail']['server']
            if 'port' in ini_config['mail']:
                config['mail']['port'] = int(ini_config['mail']['port'])
            if 'use_ssl' in ini_config['mail']:
                config['mail']['use_ssl'] = ini_config['mail'].getboolean('use_ssl')
            if 'username' in ini_config['mail']:
                config['mail']['username'] = ini_config['mail']['username']
            if 'password' in ini_config['mail']:
                config['mail']['password'] = ini_config['mail']['password']
            if 'default_sender' in ini_config['mail']:
                config['mail']['default_sender'] = ini_config['mail']['default_sender']
            if 'admin_recipient' in ini_config['mail']:
                config['mail']['admin_recipient'] = ini_config['mail']['admin_recipient']
    else:
        print(f'警告: 未找到INI配置文件: {ini_config_path}')

    return config

# 加载配置
app_config = load_config()